package com.example.demo.dubbo.impl;

import com.example.demo.dubbo.NotificationDubboService;
import org.springframework.stereotype.Service;

/**
 * 通知服务实现类
 * 使用 @Service 注解并显式指定 bean 名称
 * bean 名称：notificationService
 */
@Service("notificationService")
public class NotificationDubboServiceImpl implements NotificationDubboService {

    @Override
    public boolean sendSms(String phone, String message) {
        // 验证手机号
        if (!validatePhone(phone)) {
            return false;
        }

        // 模拟发送短信
        System.out.println("发送短信: phone=" + phone + ", message=" + message);
        logNotification("SMS", phone);
        return true;
    }

    @Override
    public boolean sendEmail(String email, String subject, String content) {
        // 验证邮箱
        if (!validateEmail(email)) {
            return false;
        }

        // 模拟发送邮件
        System.out.println("发送邮件: email=" + email + ", subject=" + subject);
        logNotification("EMAIL", email);
        return true;
    }

    @Override
    public boolean sendPush(String userId, String title, String content) {
        // 模拟发送推送
        System.out.println("发送推送: userId=" + userId + ", title=" + title);
        logNotification("PUSH", userId);
        return true;
    }

    /**
     * 验证手机号（私有方法，不应该被标记为入口）
     */
    private boolean validatePhone(String phone) {
        return phone != null && phone.matches("^1[3-9]\\d{9}$");
    }

    /**
     * 验证邮箱（私有方法，不应该被标记为入口）
     */
    private boolean validateEmail(String email) {
        return email != null && email.contains("@");
    }

    /**
     * 记录通知日志（私有方法，不应该被标记为入口）
     */
    private void logNotification(String type, String target) {
        System.out.println("Notification Log: type=" + type + ", target=" + target);
    }
}
